import Axios from "./ajaxBase";

function init(ALL_API) {
    let axiosFn = {};
    Object.keys(ALL_API).forEach(key => {
        axiosFn[key] = function (data={},restfuls={}) {
            let ALL_API_DATA = ALL_API[key](restfuls);
            //设置公共参数
            // ALL_API_DATA.data.member_id = store.state.member_id;
            // ALL_API_DATA.data.from_channel = store.state.from_channel;
            // ALL_API_DATA.data.system_id = store.state.system_id;
            ALL_API_DATA.data.msgId = new Date().getTime();
            if (ALL_API_DATA.method == "get" || !ALL_API_DATA.method) {
                return Axios({
                        method: "get",
                        url: ALL_API_DATA.url,
                        params: Object.assign({}, ALL_API_DATA.data || {}, data),
                        responseType: ALL_API_DATA.responseType || "JSON"
                    }).catch(error => { catchError(error); });
            }

            // FormData模式 上传图片
            if (ALL_API_DATA.method == "post" && data && typeof data.getAll == "function" ) {
                console.log("upImage");
                if (ALL_API_DATA.data && typeof ALL_API_DATA.data == "object") {
                    for (let v in ALL_API_DATA.data)  data.append(v, ALL_API_DATA.data[v]);
                }
                return Axios({
                        method: "post",
                        url: ALL_API_DATA.url,
                        data,
                        responseType: ALL_API_DATA.responseType || "JSON"
                    }).catch(error => { catchError(error); });
            }

            // 其他
            if (ALL_API_DATA.method == "post") {
                return Axios({
                        method: "post",
                        url: ALL_API_DATA.url,
                        data: Object.assign({}, ALL_API_DATA.data || {}, data),
                        responseType: ALL_API_DATA.responseType || "JSON"
                    }).catch(error => {  catchError(error);  });
            }
        };
    });

    return axiosFn;
}

function catchError(error) {
    console.error(error)
}

export default init;
